<?php
/**
 * Created by PhpStorm.
 * User: XD
 * Date: 2017/8/25
 * Time: 15:27
 */
namespace app\log;
class UseLog
{
    /**
     * @var object $log 保存Log对象实例
     */
    public static $log;

    /**
     * @desc 测试开始
     */
    public static function go(){
        /**
         * @desc 包含日志容器和日志写入类库
         */
        //require_once ("Log.php");
        /**
         * @desc 包含異常處理類文件
         */
        //require_once("Myexception.php");
        //require_once("Logwriter.php");

        self::$log = Log::instance();
        self::$log->attach(new Logwriter("/data/debug"),Log::DEBUG);
        self::$log->attach(new Logwriter("/data/notice"),Log::NOTICE);

        //设置用户定义的异常处理函数：
        //// 抛出异常 throw new Exception("Uncaught exception occurred!");
        //当未捕获的异常发生时要调用的函数的名称。这个处理程序函数需要接受一个参数，它将是抛出的异常对象。
        set_exception_handler(array("\app\log\Myexception","exceptionHandler"));
        //设置用户定义的错误处理函数： 然后触发错误（通过 trigger_error()）:
        /*
         * E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、 E_COMPILE_ERROR、E_COMPILE_WARNING是不会被这个句柄处理的，也就是会用最原始的方式显示出来。不过出现这些错误都是编 译或PHP内核出错，在通常情况下不会发生。
使用set_error_handler()后，error_reporting ()将会失效。也就是所有的错误（除上述的错误）都会交给自定义的函数处理。
         * */
        set_error_handler(array("\app\log\Myexception","errorHandler"));
        //设置一个程序异常终止的时候的错误处理函数
        register_shutdown_function(array("\app\log\Myexception","shutdownHandler"));
    }
    
    
    // 添加日志函数

    /**
     * @param $logtext  string 日志内容
     * @param $file    string 输出日志的文件  __FILE__
     * @param $line    string 所在的行   __LINE__
     */
    public static function addInfoAtLog($logtext,$file,$line){
        self::$log -> add(Log::INFO,$logtext,array('file'=>$file,'line'=>$line),"myself");  //myself 表示是我主动调用输出的 而不是拦截的系统输出
    }
    
    
}